package com.suplus.oms.mutilmedia.wmsms;

import java.util.HashMap;
import java.util.Map;

import com.suplus.oms.mutilmedia.wmsms.SmsAPI;

/**
 * 
 * @author ning
 * 
 * 0	短信提交成功	非常好，继续发送下一条
-1	参数不正确	确认是否遗漏必须传入的参数，以及格式和编码是否正确
-1	参数不正确，短信内容签名不规范	短信内容不规范，没有签名。请参考注意事项，或在常见问题中，查看对于签名规范的要求：请点击
-2	非法账号	UID及密码不正确，或者账号被暂时（或永久）关闭，请联系客服
-3	IP鉴权失败	在合法的IP上调用接口，或将该IP添加为鉴权IP
-4	账号余额不足	请在线充值
-5	下发失败	系统异常造成，请稍后重试
-6	短信内容含有非法关键字	请根据返回结果中提示的非法关键字，重新调整短信内容
-7	同一个号码、同一段短信内容，在同一小时内重复下发	为了避免对手机用户的骚扰，请避免类似下发，或联系客服
-8	拓展特服号码不正确	重新确认号码有效性，并重新设置
-9	非法子账号	子UID不正确，或者账号被暂时（或永久）关闭，请联系客服
-10	定时计划时间不正确	重新确认定时计划时间格式及有效性，并重新设置
-11	CID不正确	CID不正确，请确认短信模板唯一标识
-13	一次性提交手机号码过多	一次性提交的号码不要超过100条
-14	短信模板提交过快	短信模板提交过快，请与客服联系
 *
 */

public class SmsTooles {
	
	private static SmsTooles tooles = null;
	
	public static SmsTooles getSmsTooles(){
		if(tooles == null){
			tooles = new SmsTooles();
		}
		return tooles;
	}
	private SmsTooles(){
		
	}
/**
 * 手动发送短信，需要微米客服及时审核
 * @param mobiles 目标手机号码，多个以“,”分隔，一次性调用最多100个号码，示例：139********,138********
 * @param userId 微米账号的接口UID；
 * @param password 微米账号的接口密码
 * @param type 接口返回类型：json、xml、txt。默认值为txt
 * @param content 短信内容。必须设置好短信签名，签名规范： 
         * 1、短信内容一定要带签名，签名放在短信内容的最前面；
         * 2、签名格式：【***】，签名内容为三个汉字以上（包括三个）；
         * 3、短信内容不允许双签名，即短信内容里只有一个“【】”
 * @return 
 */
	private String sendManualSms(String mobiles,String userId,String password,String type,String content) {
		String result = SmsAPI.sms_api1(mobiles, userId, password, type, content);
		System.out.println("result=="+result);
		return result;
	}
	
	
/**
 * 短信接口二，触发类模板短信接口，可以设置动态参数变量。适合：验证码、订单短信等。
 * @param mobiles 目标手机号码，多个以“,”分隔，一次性调用最多100个号码，示例：139********,138********
 * @param userId 微米账号的接口UID；
 * @param password 微米账号的接口密码
 * @param type 接口返回类型：json、xml、txt。默认值为txt
 * @param cid 短信模板cid，通过微米后台创建，由在线客服审核。必须设置好短信签名，签名规范： 
         * 1、模板内容一定要带签名，签名放在模板内容的最前面；
         * 2、签名格式：【***】，签名内容为三个汉字以上（包括三个）；
         * 3、短信内容不允许双签名，即短信内容里只有一个“【】”
 * @param conMap 传入模板参数。
 				* 短信模板示例：
 				* 【微米】您的验证码是：%P%，%P%分钟内有效。如非您本人操作，可忽略本消息。
 				* 传入两个参数：
 				* p1：610912
 				* p2：3
 				* 最终发送内容：
 				* 【微米】您的验证码是：610912，3分钟内有效。如非您本人操作，可忽略本消息。
 * @return 
 */
	private String sendAutoSms(String mobiles,String userId,String password,String type,String cid,Map<String, String> conMap) {

		String result = SmsAPI.sms_api2(mobiles, userId, password, type, cid, conMap);
		System.out.println("result=="+result);
		return result;
	}
	
	/**
	 * 查询账户余额
	 * 结果代码
    *
	* 代码	结果描述	解决方案
	* >=0	账号短信余额数量	非常好，保持余额充足，不要影响正常使用
	* -1	参数不正确	确认是否遗漏必须传入的参数，以及格式和编码是否正确
	* -2	非法账号	UID及密码不正确，或者账号被暂时（或永久）关闭，请联系客服
	* -3	IP鉴权失败	在合法的IP上调用接口，或将该IP添加为鉴权IP
    * 
    * 返回结果
    *
	*	名称	类型	是否必须	示例值	描述
	*	sms-left	Number	是	157	剩余短信条数
	*	sms-sent	Number	是	13	已发送短信条数
	*	sms-total	Number	是	190	短信总条数
	*	mms-left	Number	是	90	剩余彩信条数
	*	mms-sent	Number	是	0	已发送彩信条数
	*	mms-total	Number	是	100	彩信总条数
	*	msg	String	是	账户短信彩信余额	结果描述
    * 
	 * @param userId
	 * @param password
	 * @param type
	 * @return 
	 */
	private String searchAccountSms(String userId,String password,String type) {
		String result = SmsAPI.account_api(userId, password, type);
		System.out.println("result=="+result);
		return result;
	}
	
	public static void main(String[] args){
		SmsTooles tooles = getSmsTooles();
		String mobiles = "18963968678";
		String userId = "OQvUowVr2YTS";
		String password = "6ng3dxs2";
		String type = "json";
		String cid = "ZqaWLx2tE0Oo";
		Map<String, String> conMap = new HashMap<String, String>();
		conMap.put("p1", "134532");
//		conMap.put("p2", "1");
		tooles.sendAutoSms(mobiles, userId, password, type, cid, conMap);
	}
}
